package com.xzj.admin.boot.mapper;

import java.util.List;

import com.xzj.admin.boot.domain.entity.SysUserRole;
import com.xzj.admin.boot.domain.vo.SysUserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.xzj.admin.boot.domain.entity.SysUser;

/**
 * @program: xzj-admin
 * @ClassName: SysUserMapper
 * @description: 用户表;(sys_user)表数据库访问层
 * @author: XiaZunJun
 * @create: 2024-7-30
 */
@Mapper
public interface SysUserMapper{
    /**
     * 通过ID查询单条数据
     *
     * @param userId 主键
     * @return 实例对象
     */
    SysUser queryById(String userId);
    /**
     * 分页查询指定行数据
     *
     * @param sysUser 查询条件
     * @return 对象列表
     */
    List<SysUser> queryAllByLimit(SysUser sysUser);

    /**
     * 分页查询指定行数据
     *
     * @param sysUser 查询条件
     * @return 对象列表
     */
    List<SysUserVO> pageQuery(SysUserVO sysUser);

    int userRoleBath(@Param("entities") List<SysUserRole> sysUserRoles);

    int delUserRole(@Param("userId") String userId, @Param("roleIds") List<String> roleIds);

    List<String> selectRoleIds(String userId);
    /**
     * 新增数据
     *
     * @param sysUser 实例对象
     * @return 影响行数
     */
    int insert(SysUser sysUser);
    /**
     * 批量新增数据
     *
     * @param entities List<SysUser> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<SysUser> entities);
    /**
     * 批量新增或按主键更新数据
     *
     * @param entities List<SysUser> 实例对象列表
     * @return 影响行数
     */
    int insertOrUpdateBatch(@Param("entities") List<SysUser> entities);
    /**
     * 更新数据
     *
     * @param sysUser 实例对象
     * @return 影响行数
     */
    int update(SysUser sysUser);
    /**
     * 通过主键删除数据
     *
     * @param userId 主键
     * @return 影响行数
     */
    int deleteById(long userId);
}